<!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>程序中调用业务规则</title>
        <style>
</style>
        
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css">
<style>
            body {
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', system-ui, 'Ubuntu', 'Droid Sans', sans-serif;
                font-size: 14px;
                line-height: 1.6;
            }
        </style>
        <style>
.task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; }
</style>
        
        
        
    </head>
    <body class="vscode-light">
        <h1 id="程序中调用业务规则">程序中调用业务规则</h1>
<p>支持三种部署方式：独立Rest服务、嵌入式服务、分布式服务</p>
<h2 id="独立rest服务">独立Rest服务</h2>
<p>决策服务正常部署且启动后，默认支持的规则调用方式。</p>
<p>调用入口:/api/run
调用方法:POST
访问权限:运行权限
调用参数:</p>
<ul>
<li>rpath			:文本，全路径的规则代码</li>
<li>appKey		:文本，调用方的appKey，对应系统的用户代码</li>
<li>appSecret		:文本，调用方的appSecret，对应系统用户密码</li>
<li>returnCtx		:逻辑，1:调用返回上下文参数，0:调用不返回上下文参数，只返回规则执行结果的返回值</li>
<li>data			:对象，规则上下文参数</li>
</ul>
<p><em>注意事项</em>
上述参数均为明文，主要借助ssl保障安全。如有更高的安全诉求如放伪造篡改拦截，请联系我们。</p>
<h2 id="嵌入式服务">嵌入式服务</h2>
<p>这种情况下，决策服务在业务服务环境下直接运行，具有更好的性能和灵活性。示例代码如下：</p>
<pre><code class="language-java"><div><span class="hljs-keyword">package</span> hc.bre.runner;

<span class="hljs-keyword">import</span> java.util.HashMap;

<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ShellApplyRunnerSample</span> </span>{
	<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> </span>{
		ShellApplyRunner runner = <span class="hljs-keyword">new</span> ShellApplyRunner();
		runner.setRpath(<span class="hljs-string">"xsxdjc/class9/年龄风险分类"</span>);
		runner.setClasspath(<span class="hljs-string">"C:/WD/workspace0409/BusinessRuleEngine/rulerepo"</span>);
		HashMap&lt;String, Object&gt; namedArgsMap = <span class="hljs-keyword">new</span> HashMap&lt;String, Object&gt;();
		HashMap&lt;String, Object&gt; basic = <span class="hljs-keyword">new</span> HashMap&lt;String, Object&gt;();
		basic.put(<span class="hljs-string">"年龄"</span>, <span class="hljs-number">20</span>);
		namedArgsMap.put(<span class="hljs-string">"基本信息"</span>,basic);
		
		Object ret = runner.run(namedArgsMap);
		
		System.out.println(hc.Util.jsonWrite(ret));
	}
}
</div></code></pre>
<h2 id="分布式服务">分布式服务</h2>
<p>支持微服务方式部署。 //TODO</p>

    </body>
    </html>